/*
 * Factory027.java
 *
 * Created on 26 de febrero de 2007, 05:33 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package ds;

import bean.PlanoCircular027;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Vector;



import basic.BasicToCompare;
import basic.FactoryBasic;

/**
 *
 * @author jsanchez
 */
public class Factory027 extends FactoryBasic {
    
    /**
     * Creates a new instance of Factory027
     *
     * @throws Exception
     */
    public Factory027() throws Exception {
        super(false);
    }
    
    private Map<Object,Object> parametros_=null;
        /*
         * (non-Javadoc)
         *
         * @see basic.FactoryBasic#getData(java.util.Map)
         */
    public Object[] getData(Map<Object,Object> parametros) throws Exception {
        this.parametros_=parametros;
        parametros.put("TIPO", "PLANO");
        
        executeQuery(parametros);
        
        Object[] cc381 = new /*Object[0]; /*/ Factory381().getData(parametros);
        Object[] cc382 = new /*Object[0]; /*/ Factory382().getData(parametros);
        Object[] cc383 = new /*Object[0]; /*/ Factory383().getData(parametros);
        Object[] cc384 = new /*Object[0]; /*/ Factory384().getData(parametros);
        Object[] cc385 = new /*Object[0]; /*/ Factory385().getData(parametros);
        
        Collection  DATA_FULL=new Vector();
        
        //el primer registro
        DATA_FULL.add(getFormatoInicial());
        
        this.addData(cc381, DATA_FULL,"381");
        this.addData(cc382, DATA_FULL,"382");
        this.addData(cc383, DATA_FULL,"383");
        this.addData(cc384, DATA_FULL,"384");
        this.addData(cc385, DATA_FULL,"385");
        
        //el ultimo registro
        DATA_FULL.add(getFormatoFinal(DATA_FULL));
        
        Collections.sort((List<BasicToCompare>) DATA_FULL);
        
        
        this.close(prep1);
        this.close(resul1);
        closeAll();
        return DATA_FULL.toArray();
    }
    
    
    private void addData(Object[] fuente, Collection destino,String FORMATO) {
        Integer iniciarEn=destino.size();
        PlanoCircular027 planoSalto = getSaltoFormato();
        planoSalto.setCONSECUTIVO(++iniciarEn);
        destino.add(planoSalto);
        if(fuente.length>0){
            for (int i = 0; i < fuente.length; i++) {
                ((BasicToCompare) fuente[i]).setCONSECUTIVO(++iniciarEn);
                destino.add(fuente[i]);
            }
        }else{
            PlanoCircular027 planoCero= getFormatoCero(FORMATO);
            planoCero.setCONSECUTIVO(++iniciarEn);
            destino.add(planoCero);
        }
    }
    
    private  PlanoCircular027 getSaltoFormato(){
        PlanoCircular027 planoCircular027 = new PlanoCircular027();
        planoCircular027 .setTIPO_REGISTRO("2");
        planoCircular027 .setFORMATO("000");
        planoCircular027 .setCOLUMNA("00");
        planoCircular027 .setUNIDAD_CAPTURA("11");
        planoCircular027 .setSUBCUENTA("00000");
        return planoCircular027;
    }
    
    private  PlanoCircular027 getFormatoCero(String FORMATO){
        PlanoCircular027 planoCircular027 = new PlanoCircular027();
        planoCircular027 .setTIPO_REGISTRO("4");
        planoCircular027 .setFORMATO(FORMATO);
        planoCircular027 .setCOLUMNA("99");
        planoCircular027 .setUNIDAD_CAPTURA("99");
        planoCircular027 .setSUBCUENTA("999");
        planoCircular027 .setSIGNO("+00000000000000000.00");
        return planoCircular027;
    }
    
    private  PlanoCircular027 getFormatoFinal(Collection destino){
        PlanoCircular027 planoCircular027 = new PlanoCircular027();
        planoCircular027 .setCONSECUTIVO(destino.size()+1);
        planoCircular027 .setTIPO_REGISTRO("5");
        return planoCircular027;
    }
    
    private  PlanoCircular027 getFormatoInicial() throws Exception{
        PlanoCircular027 planoCircular027 = new PlanoCircular027();
        planoCircular027 .setCONSECUTIVO(1);
        planoCircular027 .setTIPO_REGISTRO("1");
        planoCircular027 .setTIPO_ENTIDAD(getAtributo("TIPOENTIDAD").toString());
        planoCircular027 .setCODIGO_ENTIDAD(getAtributo("CODIGO").toString());
        if(resul1!=null && resul1.next())
            planoCircular027 .setFECHA_CORTE(resul1.getTimestamp("FECHA_CORTE"));
        planoCircular027 .setPALABRA_CALVE(getAtributo("PC").toString());
        planoCircular027 .setAREAR_DE_INFORMACION(getAtributo("AREAINFORMACION").toString());
        planoCircular027 .setTIPO_INFORME(getAtributo("TIPOINFORME").toString());
        return planoCircular027;
    }
}